package ar.uba.fi.tonyvaliente.tree;

import java.util.Iterator;
import java.util.Random;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import ar.uba.fi.tonyvaliente.persistors.IntegerPersistor;
import ar.uba.fi.tonyvaliente.utils.Pair;

public class BTreeTest {

	public static Log log = LogFactory.getLog(BTreeTest.class);

	public static void main(String[] args) {
		try {
			BTree<Integer, Integer> tree;
			//tree = new MemoryBTree<Integer, Integer>(8);
//			tree = new DiskBTree<Integer, Integer>(4, "/home/dmorello/btree.dat",
//					new IntegerPersistor(), new IntegerPersistor());
			tree = new DiskBTree<Integer, Integer>("/home/dmorello/btree.dat", false,
					new IntegerPersistor(), new IntegerPersistor());
			
			Random r = new Random();
			int x;
			for (int i = 0; i < 50; i++) {
				x = r.nextInt(1000);
				tree.add(x, x);
			}
			
//			tree.add(6,6);
//			tree.add(8,8);
//			tree.add(24,24);
//			tree.add(1,1);
//			tree.add(7,7);
//			tree.add(5,5);
//			tree.add(2,2);
//			tree.add(15,15);
//			tree.add(17,17);
//			tree.add(3,3);
//			tree.add(11,11);
//			tree.add(56,6);
//			tree.add(58,8);
//			tree.add(524,24);/****/
//			tree.add(48,48);
//			tree.add(67,7);
//			tree.add(55,5);
//			tree.add(49,49);
//			tree.add(515,15);/****/
//			tree.add(517,17);
//			tree.add(51,3);
//			tree.add(511,11);
//			tree.add(26,6);
//			tree.add(28,8);
//			tree.add(224,24);
//			tree.add(9,9);
//			tree.add(10,10);
//			tree.add(512,512);
//			tree.add(513,513);
//			tree.add(53,53);
//			tree.add(54,54);
//			tree.add(57, 57);
//			tree.add(518,518);
//			tree.add(519,519);
//			tree.add(520,520);
//			tree.add(21,1);
//			tree.add(27,7);/****/
//			tree.add(25,5);
//			tree.add(22,2);
//			tree.add(215,15);
//			tree.add(217,17);
//			tree.add(23,3);
//			tree.add(211,11);
//			tree.add(-15,-15);
//			tree.add(10000,10000);
//			tree.add(-3,-3);
//			tree.add(9999,9999);
			
			System.out.println("Iterando...");
			Iterator<Pair<Integer, Integer>> it = tree.iterator();
			while (it.hasNext()) {
				Pair<Integer, Integer> pair = it.next();
				System.out.printf("key: %d - value: %d", pair.getFirst(), pair.getSecond());
				System.out.println();
				System.out.println("-------------------------------");
			}
			
			tree.close();
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
